/**
 * 小程序生命周期
 *    1. 分为三个级别：应用级、页面级、组件级
 *    2. 应用级: app.js
 *        1. onLaunch - 小程序的初始化或冷启动
 *           1. 它可以获取到一个 options 的参数，该参数里面包含默认打开的页面的路径与场景值相关的东西
 *        2. onShow - 监听小程序启动或切前台。
 *        3. onHide - 监听小程序切后台。
 *        4. onError - 监听整个小程序产生错误
 *            1. 做异常上报的工作
 *        5. onPageNotFound - 页面找不到时的触发
 *            1. 监听打开小程序时，页面不存在时触发，故意跳转到一些不存在的页面是不会触发的
 *            2. 触发场景：
 *                之前有一个活动页面 pages/active/active 然后针对它做了一些小程序码发出去了，
 *                后续活动结束之后，将该页面给删除了，用户通过扫之前提供的小程序码再进入该活动页面时，就会触发。
 *            3. 应用场景：
 *                给用户一个友好提示，或者直接操作跳转会首页
 *        6. onUnhandledRejection - 未处理的 Promise 拒绝事件监听函数。
 *            1. 做异常上报的工作
 *        7. onThemeChange - 监听系统主题颜色的变化
 *    3. 页面级: 每个页面的js
 *        1. onLoad - 监听页面加载
 *            1. 可以类比于 Vue 中的 created
 *            2. 可以获取页面的查询字符串参数
 *        2. onShow - 监听页面显示
 *        3. onHide - 监听页面隐藏
 *        4. onReady - 监听页面初始渲染完成
 *            2. 可以类比于 Vue 中的 mounted ，可以通过获取DOM信息
 *        5. onUnload - 监听页面卸载
 *    4. 组件级: 每个组件的js
 */


Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

    console.log('Page onLoad', options)

    new Promise((resolve, reject) => {
      setTimeout(() => {
        reject('错了')
      }, 2000)
    }).catch(error => {
      console.log('111')
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    console.log('Page onReady')
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('Page onShow')
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    console.log('Page onHide')
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    console.log('Page onUnload')
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   *    1. 需要启用 enabledPullDownRefresh
   *    2. 调用 wx.stopPullDownRefresh() 停止下拉刷新
   *    3. 调用 wx.startPullDownRefresh() 开启下拉刷新
   */
  onPullDownRefresh() {
    console.log('Page onPullDownRefresh')
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   *    1. 在这里可以实现，上拉加载更多的逻辑
   *    2. 可以配置 onReachBottomDistance 来控制距离底部的距离，默认为 50
   */
  onReachBottom() {
    console.log('Page onReachBottom')
  },

  /**
   * 用户点击右上角分享
   *    1. 只有设置了该函数的页面，分享给朋友的按钮才会亮起来
   *    2. 该函数可以返回一个对象，来自定义分享内容
   *    3. 还接受一个对象内容的参数
   *      obj.from: "menu"    => 表示分享是由胶囊按钮触发
   *      obj.from: "button"  => 表示由 <button open-type="share"></button> 触发的
   *                             且 obj.target 会有值，值的内容，就是按钮的一些信息
   */
  onShareAppMessage(obj) {
    console.log('Page onShareAppMessage', obj)

    if (obj.from === 'button') {
      return {
        title: obj.target.dataset.title || 'Hello',
        path: obj.target.dataset.path || '/pages/home/home',
      }
    }


    return {
      title: '震惊了，80老头还可以...', // 分享标题，默认使用当前小程序名称
      path: '/pages/about/about', // 好友点开该分享之后打开的页面链接，默认使用当前页面链接
      imageUrl: 'https://pic.maizuo.com/usr/movie/45814e499b020d394c011135cd2719dc.jpg?x-oss-process=image/quality,Q_70', // 分享的图片，默认使用当前页面的截图
      // 可以通过异步来处理分享的内容，resolve 结果做为分享内容，要注意最多等待 3 秒，3秒还没有 resolve 的话则使用上面配置的默认内容
      promise: new Promise((resolve, reject) => {
        // 做异步请求，后端返回分享内容
        setTimeout(() => {
          resolve({
            title: 'Hello',
            path: '/pages/home/home',
          })
        }, 3100)
      })
    }
  }
})